Several factors may cause packets to be delivered out of order in packet-switched networks. For example, a Radio Access Network (RAN) is a packet-switched network which includes an air interface and a backhaul connection. Packet retransmission over the air interface may cause packets to arrive out of order. In another example, load balancing across multiple T1/E1 lines or other interfaces over the backhaul may cause packets to be delivered over multiple connections, and for that reason to arrive out of order.
It is often preferable to have in-order packet delivery in a packet network, since the user application layer typically needs to receive the packets in sequence to correctly decode the packet stream. This is realized by using the packet sequence number to reorder the packets.
In a network description which follows a layering model, reordering can be applied at different layers. A lower layer uses the sequence numbers of its own data units, e.g., packets, to re-sequence and reassemble the upper-layer packet which is to be delivered. However, reordering typically involves the use of a buffer to store the early-arrived packets and wait for the late-arrived packets so that the packets can be re-sequenced. This buffering introduces extra delay and is not desirable for delay-sensitive applications. If, on the other hand, the upper layer could handle out-of-order packets, it might be possible to skip the reordering operation at the lower layer, and thus to avoid the extra buffering delay.
Furthermore, end-to-end transmissions often involve multiple segments and individually controlled networks. Packets may get out of order in any of the transmission paths. Reordering in one network segment does not guarantee that the packets will be delivered in sequence to the final destination. However, if each network segment performed a reordering operation, the cumulative effect could be to introduce an excessive amount of extra delay. Such a result would be particularly undesirable for multimedia applications, which are delay sensitive.
For the above reasons, among others, it would be advantageous for a packet network, especially one highly sensitive to overall end-to-end delay, to support out-of-order delivery of packets.
It would be even more advantageous if the degree of packet out-of-order delivery could be controlled. That is, the processing of packets in upper layers may be tolerant to greater or lesser amounts of misordering of packets. In this regard, “upper” is in relation to a layer, such as the IP layer, in which a certain amount of misordering is tolerated. By “misordering” is meant the arrival of a packet of higher sequential number prior to the arrival of a packet of lower sequential number. Thus, it would be advantageous to control the amount of misordering so that it lies within a tolerable range.
For example, the header compression layer may be able to handle late-arriving packets. It could be possible for the decompressor to successfully decode a packet arriving late with a sequence number smaller than that of the previously decoded packet. But if the packet arrived too late, the decompressor might be unable to decode the packet, and thus would declare a decompression failure and be required to discard the packet.
By way of illustration, we assume that the decompressor can handle packets misordered to the fifth degree. The decompressor receives packets 5, 1, 10, 2. The decompressor decodes packet 5 and then packet 1 since the degree of misorder is 4. The decompressor cannot decode 2 since its degree of misorder is 8, which is above the tolerance the compressor can handle. Packet 2 will be discarded although it is correctly received.
Thus, it would be advantageous to support both packet in-order delivery and out-of-order delivery in a packet network. It would be still more advantageous to control the degree of misorder of delivered packets based on system requirements and tolerance to packet misorder.